package com.sxj.corejava.code01;

/**
 * @author 石小俊
 * @date 2025年01月02日
 */
public class Test05_强制类型转换 {

    public static void main(String[] args) {
        // 自动类型转换, 小->大
        int i = 1;
        long l = i;
        // 强制类型转换, 大->小
        long l1 = 10L;
        int i1 = (int) l1;
        System.out.println(i1);

        // 在强制类型转换时,可能存在数据丢失的场景
        // 场景一
        // 当转换前的类型的值不在转换后的类型范围中时
        // 会根据二进制数据进行重新排列
        int i2 = 1000;
        byte b1 = (byte) i2;
        System.out.println(b1);

        // 场景二
        // 当转换前的值是一个小数,转换后的类型是一个整数时
        // 会直接截取掉小数部分
        double d2 = 3.64;
        int i3 = (int) d2;
        System.out.println(i3);

        // 场景三
        // 可能同时满足上面两个场景
        double d3 = 1000.123;
        byte b2 = (byte) d3;
        System.out.println(b2);
    }

}
